package day06

import java.io.File

/**
 * 标准库函数
 */
fun main() {
    //TODO: Apply 函数
    val file1 = File("E://i have a dream_copy.txt")
    file1.setReadable(true)
    file1.setWritable(true)
    file1.setExecutable(false)

    //上述写法 换成  Apply 写法
    //Apply 函数可以看作一个 配置函数  ，你可以传入一个接收者，然后调用一系列函数来配置它以便使用，如果提供lambda给apply函数执行，
    //它会返回配置好的接收者
    val file2 = File("E://i have a dream_copy.txt").apply {
        setReadable(true)
        setWritable(true)
        setExecutable(false)
    }


    //let
    //求集合里第一个数的平方
    val result = listOf<Int>(3,2,1).first().let {
        it * it
    }

    println(result)

    //如果不实用let 那么需要获取第一个元素，重新计算,不够简洁
    val firstElemment = listOf<Int>(2,3,4).first()
    val result2 = firstElemment * firstElemment
    println(result2)

    //使用let 2

//    val guestName = guestName(null)
//    val guestName = guestName("lily")
    val guestName2 = guestName2("lily")
    println(guestName2)


}

//使用let
fun guestName(gusName:String?):String{
    return gusName?.let {
        "welcome,$it"
    }?:"what is your name?"
}

//不用let
fun guestName2(gusName: String?):String{
    return if (gusName != null){
        "2 welcome,$gusName"
    }else{
        "2 what is your name?"
    }
}

